project-list-buffers-ibuffer: Handle the FILES-ONLY argument
authorDmitry Gutov <dmitry@gutov.dev>
Sun, 9 Jun 2024 02:37:25 +0000 (05:37 +0300)
committerDmitry Gutov <dmitry@gutov.dev>
Sun, 9 Jun 2024 02:37:42 +0000 (05:37 +0300)
* lisp/progmodes/project.el (project-list-buffers-ibuffer):
Handle the FILES-ONLY argument (bug71290).
(project-list-buffers-buffer-menu): Expand docstring.

lisp/progmodes/project.el

index ab928a35e54381854ebc8e276cdbc52af6bc9bc6..a16ff30395bc9190d7f5c65f0dff1b1e7fbdb6f6 100644 (file)
@@ -1567,7 +1567,8 @@ ARG, show only buffers that are visiting files."
     (funcall project-buffers-viewer pr arg)))
 
 (defun project-list-buffers-buffer-menu (project &optional files-only)
-  "Lists buffers of a project in Buffer-menu mode"
+  "List buffers for PROJECT in Buffer-menu mode.
+If FILES-ONLY is non-nil, only show the file-visiting buffers."
   (let ((buffer-list-function
          (lambda ()
            (seq-filter
@@ -1598,11 +1599,13 @@ ARG, show only buffers that are visiting files."
        (list-buffers-noselect files-only buffer-list-function)))))
 
 (defun project-list-buffers-ibuffer (project &optional files-only)
-  "Lists buffers of a project with Ibuffer"
-  ;; TODO files-only
+  "List buffers for PROJECT using Ibuffer.
+If FILES-ONLY is non-nil, only show the file-visiting buffers."
   (ibuffer t (format "*Ibuffer-%s*" (project-name project))
-           `((predicate . (member (current-buffer)
-                                  (project-buffers ',project))))))
+           `((predicate . (and
+                           (or ,(not files-only) buffer-file-name)
+                           (member (current-buffer)
+                                   (project-buffers ',project)))))))
 
 (defcustom project-kill-buffer-conditions
   '(buffer-file-name    ; All file-visiting buffers are included.